<html>
<head>
<title>Edulinq: Reimplementing LINQ to Objects</title>
</head>
<body>
<h1>Edulinq: Reimplementing LINQ to Objects</h1>
<p>This constitutes the text of the bodies of the blog posts; please see 
<a href="http://msmvps.com/blogs/jon_skeet/archive/tags/Edulinq/default.aspx">the original posts</a> for community comments etc.</p>
<p>Note that the posts have <i>not</i> been particularly edited for out-of-blog reading: some will no doubt refer
to comments, or timescales, or generally indicate their origin. Consider this a somewhat quick-and-dirty hack to make
the posts available in other forms.</p>
<ul>
<li><a href="01-Intro.html">Part 1 - Introduction</a></li>
<li><a href="02-Where.html">Part 2 - Where</a></li>
<li><a href="03-Select.html">Part 3 - Select (and a rename...)</a></li>
<li><a href="04-Range.html">Part 4 - Range</a></li>
<li><a href="05-Empty.html">Part 5 - Empty</a></li>
<li><a href="06-Repeat.html">Part 6 - Repeat</a></li>
<li><a href="07-Count-And-LongCount.html">Part 7 - Count and LongCount</a></li>
<li><a href="08-Concat.html">Part 8 - Concat</a></li>
<li><a href="09-SelectMany.html">Part 9 - SelectMany</a></li>
<li><a href="10-AnyAndAll.html">Part 10 - Any and All</a></li>
<li><a href="11-FirstSingleLast.html">Part 11 - First/Single/Last and the ...OrDefault versions</a></li>
<li><a href="12-DefaultIfEmpty.html">Part 12 - DefaultIfEmpty</a></li>
<li><a href="13-Aggregate.html">Part 13 - Aggregate</a></li>
<li><a href="14-Distinct.html">Part 14 - Distinct</a></li>
<li><a href="15-Union.html">Part 15 - Union</a></li>
<li><a href="16-Intersect.html">Part 16 - Intersect (and build fiddling)</a></li>
<li><a href="17-Except.html">Part 17 - Except</a></li>
<li><a href="18-ToLookup.html">Part 18 - ToLookup</a></li>
<li><a href="19-Join.html">Part 19 - Join</a></li>
<li><a href="20-ToList.html">Part 20 - ToList</a></li>
<li><a href="21-GroupBy.html">Part 21 - GroupBy</a></li>
<li><a href="22-GroupJoin.html">Part 22 - GroupJoin</a></li>
<li><a href="23-TakeAndSkip.html">Part 23 - Take/Skip/TakeWhile/SkipWhile</a></li>
<li><a href="24-ToArray.html">Part 24 - ToArray</a></li>
<li><a href="25-ToDictionary.html">Part 25 - ToDictionary</a></li>
<li><a href="26a-IOrderedEnumerable.html">Part 26a - IOrderedEnumerable</a></li>
<li><a href="26b-OrderByAndThenBy.html">Part 26b - OrderBy{,Descending}/ThenBy{,Descending}</a></li>
<li><a href="26c-OptimizingOrderedEnumerable.html">Part 26c - Optimizing OrderedEnumerable</a></li>
<li><a href="26d-YieldingEarly.html">Part 26d - Fixing the key selectors, and yielding early</a></li>
<li><a href="27-Reverse.html">Part 27 - Reverse</a></li>
<li><a href="28-Sum.html">Part 28 - Sum</a></li>
<li><a href="29-MinAndMax.html">Part 29 - Min/Max</a></li>
<li><a href="30-Average.html">Part 30 - Average</a></li>
<li><a href="31-ElementAt.html">Part 31 - ElementAt / ElementAtOrDefault</a></li>
<li><a href="32-Contains.html">Part 32 - Contains</a></li>
<li><a href="33-CastAndOfType.html">Part 33 - Cast and OfType</a></li>
<li><a href="34-SequenceEqual.html">Part 34 - SequenceEqual</a></li>
<li><a href="35-Zip.html">Part 35 - Zip</a></li>
<li><a href="36-AsEnumerable.html">Part 36 - AsEnumerable</a></li>
<li><a href="37-GuidingPrinciples.html">Part 37 - Guiding principles</a></li>
<li><a href="38-WhatsMissing.html">Part 38 - What's missing?</a></li>
<li><a href="39-ComparingImplementations.html">Part 39 - Comparing implementations</a></li>
<li><a href="40-Optimization.html">Part 40 - Optimization</a></li>
<li><a href="41-QueryExpressions.html">Part 41 - How query expressions work</a></li>
<li><a href="42-MoreOptimization.html">Part 42 - More optimization</a></li>
<li><a href="43-IQueryable.html">Part 43 - Out-of-process queries with IQueryable</a></li>
<li><a href="44-DesignAspects.html">Part 44 - Aspects of Design</a></li>
<li><a href="45-Conclusion.html">Part 45 - Conclusion and List of Posts</a></li>
</ul>
</body>
</html>
